home *** CD-ROM | disk | FTP | other *** search
- <?xml version='1.0' encoding='UTF-8' ?>
- <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
- <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
- <!-- English Revision: 1.5.2.9 -->
-
- <!--
- Copyright 2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
- <manualpage metafile="name-based.xml.meta">
- <parentdocument href="./">Hosting Virtual</parentdocument>
- <title>Soporte de Hosting Virtual basado en nombres</title>
-
- <summary>
- <p>Este documento describe cómo y cuándo debe usarse hosting virtual
- basado en nombres.</p>
- </summary>
-
- <seealso><a href="ip-based.html">Hosting virtual basado en
- IPs</a></seealso>
- <seealso><a href="details.html">Discusión en profundidad sobre el
- proceso de selección de host virtual</a></seealso>
- <seealso><a href="mass.html">Configuración dinámica de Hosting virtual masivo</a></seealso>
- <seealso><a href="examples.html">Ejemplos de hosting virtual para
- configuraciones típicas</a></seealso>
- <seealso><a href="examples.html#serverpath">Ejemplo de
- configuración de ServerPath</a></seealso>
-
- <section id="namevip"><title>Diferencias entre el hosting vitual
- basado en nombres y el basado en IPs</title>
-
- <p>El hosting virtual basado en IPs usa la dirección IP de la
- conexión para determinar qué host virtual es el que tiene que
- servir. Por lo tanto, necesitará tener diferentes direcciones IP
- para cada host. Si usa hosting virtual basado en nombres, el
- servidor atiende al nombre de host que especifica el cliente en
- las cabeceras de HTTP. Usando esta técnica, una sola dirección IP
- puede ser compartida por muchos sitios web diferentes.</p>
-
- <p>El hosting virtual basado en nombres es normalmente más
- sencillo, porque solo necesita configurar su servidor de DNS para
- que localice la dirección IP correcta y entonces configurar Apache
- para que reconozca los diferentes nombres de host. Usando hosting
- virtual basado en nombres también se reduce la demanda de
- direcciones IP, que empieza a ser un bien escaso. Por lo tanto,
- debe usar hosting virtual basado en nombres a no ser que haya
- alguna razón especial por la cual tenga que elegir usar hosting
- vitual basado en direcciones IP. Algunas de éstas razones pueden
- ser:</p>
-
- <ul>
- <li>Algunos clientes antiguos no son compatibles con el
- hosting virtual basado en nombres. Para que el hosting
- virtual basado en nombres funcione, el cliente debe enviar la
- cabecera de Host HTTP. Esto es necesario para HTTP/1.1, y está
- implementado como extensión en casi todos los navegadores
- actuales. Si necesita dar soporte a clientes obsoletos y usar
- hosting virtual basado en nombres, al final de este documento
- se describe una técnica para que pueda hacerlo.</li>
-
- <li>El hosting virtual basado en nombres no se puede usar
- junto con SSL por la naturaleza del protocolo SSL.</li>
-
- <li>Algunos sistemas operativos y algunos elementos de red
- tienen implementadas técnicas de gestión de ancho de banda que
- no pueden diferenciar entre hosts a no ser que no estén en
- diferentes direcciones IP.</li>
- </ul>
-
- </section>
-
- <section id="using"><title>Cómo usar hosting vitual basado en
- nombres</title>
-
- <related>
- <modulelist>
- <module>core</module>
- </modulelist>
-
- <directivelist>
- <directive module="core">DocumentRoot</directive>
- <directive module="core">NameVirtualHost</directive>
- <directive module="core">ServerAlias</directive>
- <directive module="core">ServerName</directive>
- <directive module="core">ServerPath</directive>
- <directive module="core" type="section">VirtualHost</directive>
- </directivelist>
- </related>
-
- <p>Para usar hosting virtual basado en nombres, debe especificar
- en el servidor qué dirección IP (y posiblemente qué puerto) se va
- a usar para atender las peticiones a los diferentes hosts. Esto
- se hace con la directiva <directive
- module="core">NameVirtualHost</directive>. Normalmente, cualquiera
- o todas las direcciones IP del servidor pueden usarse, también
- puede usar <code>*</code> como argumento para la directiva
- <directive module="core">NameVirtualHost</directive>. Si va a usar
- más de un puerto (por ejemplo si va usar SSL) debe añadir un
- puerto a cada argumento, por ejemplo <code>*:80</code>. Tenga en
- cuenta que especificando una dirección IP en la directiva
- <directive module="core">NameVirtualHost</directive> no hace que
- el servidor escuche automáticamente en esa dirección IP. Consulte
- la sección <a href="../bind.html">Especificar las direcciones y
- puertos que usa Apache</a> para obtener más información. Además,
- cualquier dirección IP especificada debe asociarse con un
- dispositivo de red del servidor.</p>
-
- <p>El siguiente paso es crear un bloque <directive type="section"
- module="core">VirtualHost</directive> para cada host diferente que
- quiera alojar en el servidor. El argumento de la directiva
- <directive type="section" module="core">VirtualHost</directive>
- debe ser el mismo que el argumento de la directiva <directive
- module="core">NameVirtualHost</directive> (por ejemplo, una
- dirección IP, o un <code>*</code> para usar todas las direcciones
- que tenga el servidor). Dentro de cada bloque <directive
- type="section" module="core">VirtualHost</directive>, necesitará
- como mínimo una directiva <directive
- module="core">ServerName</directive> para designar qué host se
- sirve y una directiva <directive
- module="core">DocumentRoot</directive> para indicar dónde están
- los contenidos a servir dentro del sistema de ficheros.</p>
-
- <note><title>Añadir hosts vituales a un servidor web ya existente</title>
- <p>Si está añadiendo hosts virtuales a un servidor web ya
- existente, debe crear también un bloque <directive
- type="section" module="core" >VirtualHost</directive> para el
- host que ya tenga funcionando. Los valores de las directivas
- <directive module="core">ServerName</directive> y <directive
- module="core" >DocumentRoot</directive> desde este nuevo host
- virtual deben tener los mismos valores que los de las
- directivas <directive module="core">ServerName</directive>
- <directive module="core">DocumentRoot</directive>
- globales. Ponga este host virtual como el primero en el
- archivo de configuración para que sea el que actúe como host
- por defecto.</p>
- </note>
-
- <p>Por ejemplo, suponga que está sirviendo el dominio
- <code>www.domain.tld</code> y quiere añadir el host virtual
- <code>www.otherdomain.tld</code>, que apunta a la misma dirección
- IP. Entonces, lo único que tiene que hacer es añadir lo siguiente
- al fichero <code>httpd.conf</code>:</p>
-
- <example>
- NameVirtualHost *:80<br />
- <br />
- <VirtualHost *:80><br />
- <indent>
- ServerName www.domain.tld<br />
- ServerAlias domain.tld *.domain.tld<br />
- DocumentRoot /www/domain<br />
- </indent>
- </VirtualHost><br />
- <br />
- <VirtualHost *:80><br />
- <indent>ServerName www.otherdomain.tld<br />
- DocumentRoot /www/otherdomain<br />
- </indent>
- </VirtualHost><br />
- </example>
-
- <p>También puede optar por especificar una dirección IP
- explícitamente en lugar de usar un <code>*</code> en las
- directivas <directive module="core" >NameVirtualHost</directive> y
- <directive type="section" module="core"
- >VirtualHost</directive>. Por ejemplo, puede hacer esto
- para hacer funcionar diferentes hosts virtuales basados en nombres
- en una dirección IP, o basados en IPs, o un conjunto de hosts
- virtuales basados en nombres en otra dirección.</p>
-
- <p>También puede que quiera que se acceda a un determinado sitio
- web usando diferentes nombres. Esto es posible con la directiva
- <directive module="core">ServerAlias</directive>, puesta dentro de
- la sección <directive type="section" module="core"
- >VirtualHost</directive>. Por ejemplo, en el primer bloque
- <directive type="section" module="core">VirtualHost</directive> de
- arriba, la directiva <directive
- module="core">ServerAlias</directive> indica la lista de nombres
- que pueden usarse para acceder a un mismo sitio web:</p>
-
- <example>
- ServerAlias domain.tld *.domain.tld
- </example>
-
- <p>entonces las peticiones para todos los hosts en el dominio
- <code>domain.tld</code> serán servidas por el host virtual
- <code>www.domain.tld</code>. Los carácteres comodines
- <code>*</code> y <code>?</code> pueden usarse para encontrar
- equivalencias con los nombres. Por supuesto, no puede inventarse
- nombres y ponerlos en la directiva <directive
- module="core">ServerName</directive> o
- <code>ServerAlias</code>. Primero debe tener su servidor de DNS
- debidamente configurado para que pueda hacer corresponder esos
- nombres con una dirección IP de su servidor.</p>
-
- <p>Para terminar, puede mejorar el rendimiento de la configuración
- de los hosts virtuales poniendo otras directivas dentro de las
- secciones <directive type="section"
- module="core">VirtualHost</directive>. La mayor parte de las
- directivas pueden ponerse en esos containers y cambiarán solo la
- configuración del host virtual al que se refieran. Para ver si una
- directiva en particualar puede usarse así, consulte el <a
- href="../mod/directive-dict.html#Context">Contexto</a> de la
- directiva. Las directivas de configuración especificadas en el
- <em>contexto del servidor principal</em> (fuera de
- cualquier sección <directive type="section"
- module="core">VirtualHost</directive>) se usan única y
- exclusivamente si sus valores no son sustituidos por alguno de los
- parámetros de configuración del host virtual.</p>
-
- <p>Cuando llega una petición, el servidor primero verifica si se
- está usando una dirección IP que coincide con el valor de la
- directiva <directive module="core"
- >NameVirtualHost</directive>. Si es el caso, mirará en cada
- sección <directive type="section"
- module="core">VirtualHost</directive> cuya IP coincida e intentará
- encontrar si el valor de la directiva <directive module="core"
- >ServerName</directive> o de la directiva <code>ServerAlias</code>
- coincide con el nombre del sitio web de la petición. Si encuentra
- una coincidencia, usa la configuración de ese servidor. Si no la
- encuentra, usa <strong>el primer host virtual de la lista</strong>
- cuya dirección IP coincida con el de la petición.</p>
-
- <p>Como consecuencia, el primer host virtual de la lista es el que
- se usa <em>por defecto</em>. La directiva <directive
- module="core">DocumentRoot</directive> del <em>servidor
- principal</em> no se usará <strong>nunca</strong> cuando una
- dirección IP coincida con el valor de la directiva <directive
- module="core">NameVirtualHost</directive>. Si quiere usar una
- configuración especial para peticiones que no coinciden con ningún
- host virtual en concreto, ponga esa configuración en una sección
- <directive type="section" module="core">VirtualHost</directive> y
- póngala la primera en el fichero de configuración.</p>
-
- </section>
-
- <section id="compat"><title>Compatibilidad con navegadores
- antiguos</title>
-
- <p>Como se dijo antes, hay algunos clientes que no envían los
- datos necesarios para que funcione correctamente el hosting
- virtual basado en nombres. Estos clientes van a recibir siempre
- como respuesta a sus peticiones, páginas del primer host virtual
- que haya en la lista para esa dirección IP (el host virtual
- <cite>primario</cite> basado en nombres).</p>
-
- <note><title>¿Cómo de antiguo?</title>
- <p>Tenga en cuenta que cuando decimos antiguo, queremos decir
- realmente antiguo. Es muy poco probable que encuentre uno de esos
- navegadores en uso todavía. Todas las versiones actuales de
- cualquier navegador envían la cabecera <code>Host</code> que se
- necesita para que el hosting virtual basado en nombres
- funcione.</p>
- </note>
-
- <p>Existe una manera de evitar este problema con la directiva
- <directive module="core">ServerPath</directive>, aunque es un poco
- complicada:</p>
-
- <p>Ejemplo de configuración:</p>
-
- <example>
- NameVirtualHost 111.22.33.44<br />
- <br />
- <VirtualHost 111.22.33.44><br />
- <indent>
- ServerName www.domain.tld<br />
- ServerPath /domain<br />
- DocumentRoot /web/domain<br />
- </indent>
- </VirtualHost><br />
- </example>
-
- <p>¿Qué significa esto? Esto significa que una petición de
- cualquier URI que empiece por "<code>/domain</code>" será servida
- por el host virtual <code>www.domain.tld</code>. Esto significa
- que las páginas pueden accederse como
- <code>http://www.domain.tld/domain/</code> por todos los clientes,
- aunque los clientes que envíen una cabecera <code>Host:</code>
- pueden también acceder con
- <code>http://www.domain.tld/</code>.</p>
-
- <p>Para hacer que esto funcione, ponga un enlace en la página de
- su host virtual primario a
- <code>http://www.domain.tld/domain/</code>. Entonces, en las
- páginas del host virtual, asegúrese de que usa o enlaces relativos
- (<em>por ejemplo</em>, "<code>file.html</code>" o
- "<code>../icons/image.gif</code>") o enlaces que contengan el
- <code>/domain/</code> anterior (<em>por ejemplo</em>,
- "<code>http://www.domain.tld/domain/misc/file.html</code>" o
- "<code>/domain/misc/file.html</code>").</p>
-
- <p>Esto requiere un poco de disciplina, pero siguiendo estas
- reglas, puede asegurarse, casi en todos los casos, de que las
- páginas de su sitio web podrán ser accedidas desde cualquier
- navegador, ya sea nuevo o antiguo.</p>
-
- </section>
- </manualpage>
-
-
-
-